package com.cloud.basic.webservice.soapClient.Client;

import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * webservice客户端
 * @author eguid
 *
 */
public interface Client {
	/**
	 * 完整路径
	 * @param xml - 完整xml报文
	 * @param urlString - 请求路径
	 * @param soapAction - 调用方法
	 * @return
	 * @throws IOException
	 */
	public String access(String xml,String urlString,String soapAction) throws IOException;

	/**
	 * 调用接口
	 * @param url - 接口地址
	 * @param soapAction - 调用的方法名
	 * @return
	 * @throws IOException
	 */
	public String access(String url,String soapAction) throws IOException;

	/**
	 * 完整路径
	 * @param xml - 完整xml报文
	 * @param urlString - 请求路径
	 * @param soapAction - 调用方法
	 * @return
	 * @throws IOException
	 */
	public String access(byte[] xml,String urlString,String soapAction) throws IOException;

	/**
	 * 调用接口（必须保证已经存在xml报文，url请求路径已存在）
	 * @param soapAction - 调用的方法名
	 * @return
	 * @throws IOException
	 */
	public String access(String soapAction) throws IOException;

	/**
	 * 请求（必须保证已经存在xml报文，url请求路径和调用方法）
	 * @return
	 * @throws IOException
	 */
	public String access() throws IOException;

	/**
	 * 拼接xml报文（根据soap1.1和soap1.2自动进行拼接）
	 * @param soapAction - 请求方法
	 * @return
	 */
	public String splice(String soapAction);

	/**
	 * 增加验证参数
	 * @param xml - 完整xml名称和值
	 */
	public void setHeader(String header);

	/**
	 * 设置验证参数
	 * @param map 完整xml名称和值（键值对形式添加）
	 */
	public void setHeader(Map<String,String> map);

	/**
	 * 添加参数
	 * @param xml - 完整名称和值
	 */
	public void setBody(String body);

	/**
	 * 添加参数
	 * @param list - 完整xml名称和值（键值对形式添加）
	 * @param map -
	 */
	public void setBody(Map<String,String> map);

	/**
	 * 添加参数
	 * @param list
	 */
	public void setBody(List<String> list);

	/**
	 * 添加参数
	 * @param Array
	 */
	public void setBody(String ... arr);

	/**
	 * 设置命令空间
	 * @param xmlns
	 */
	public void setXmlns(String xmlns);

	/**
	 * 设置请求路径
	 * @param url
	 */
	public void setUrl(String url);

	/**
	 * 设置调用方法
	 * @param soapAction
	 */
	public void setSoapAction(String soapAction);
}
